world

Source

InputReader{} = elementary
signal[_16971e9d]():Void;
signal[_6b6a16ae]():Void;
signal[_b97cf78]():Void;
signal[_3ec1e10c]():Void;
signal[_69cad977]():Void;
end
AcmeControl{} = elementary
slot[_4521cef5]():Void
end
slot[_179d44df]():Void
end
slot[_622d8a59]():Void
end
end
ConsoleOut{} = elementary
slot[_65e95f04]():Void
end
slot[_af917bd]():Void
end
slot[_6d4fab65]():Void
end
end
Status{} = Enum
end PlayerControl{} = elementary
signal[_45844479]():Void;
signal[_3f52c19d]():Void;
signal[_e582a85]():Void;
signal[_57b33087]():Void;
signal[_3512731f]():Void;
signal[_575887db]():Void;
slot[_15aec462]():Void
if (status = Status.PAUSE) then
doStart();
ef (status = Status.PLAY) then
doPause();
end
end
slot[_31aedcb3]():Void
doStop();
end
slot[_2300c858]():Void
status := Status.PLAY;
sayPlay();
end
slot[_211aa79a]():Void
status := Status.STOP;
sayStop();
end
slot[_6b7536e7]():Void
status := Status.PAUSE;
sayPause();
end
status : Status = Status.STOP
end
World{} = composition
//geometry width="400" height="210"
uiOut : ConsoleOut
acmeCntrl : AcmeControl
cntrl : PlayerControl
inRead : InputReader
cntrl.doPause -> acmeCntrl.doPause;
cntrl.doStart -> acmeCntrl.doStart;
cntrl.doStop -> acmeCntrl.doStop;
cntrl.sayPause -> uiOut.sayPause;
//geometry path="260"
cntrl.sayPlay -> uiOut.sayPlay;
//geometry path="280"
cntrl.sayStop -> uiOut.sayStop;
//geometry path="270"
inRead.playPause -> cntrl.playPause;
inRead.stop -> cntrl.stop;
inRead.paused -> cntrl.paused;
inRead.started -> cntrl.started;
inRead.stopped -> cntrl.stopped;
end

Picture

World uiOut ConsoleOut sayPlay sayStop sayPause acmeCntrl AcmeControl doStart doStop doPause cntrl PlayerControl playPause stop started stopped paused doStart doStop doPause sayPlay sayStop sayPause inRead InputReader playPause stop started stopped paused